2350
2215
Mam tablicę statsname jako
jabłko
X
banan
Y
kiwi
z
Muszę umieścić jabłko, banan i kiwi w tablicy Owoce oraz X, Y i Z w tablicy zwanej alfabetami.
Czy jest jakiś prosty mechanizm C # do tego? 
Użyj IEnumerable  .Where Przeciążenie, które dostarcza indeks.
var owoce = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alphabets = statsname.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Skradzione z How to get Alternate elements using Enumerable in C #
var owoce = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alphabets = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Jeśli dobrze cię zrozumiałem, pytanie, czego chcesz, jest bardzo proste:
Chcesz umieścić owoce w tablicy owoców i to samo dla alfabetów i pojawiają się one naprzemiennie w tablicy statsname, więc:
for (int i = 0, j = 0; i  list = new List  () {"jabłko", "X", "banan", "Y", "Kiwi", "z"};
var result = list.Select ((l, i) => new {l, i})
.GroupBy (p => p.i% 2)
.Select (x => x.Select (v => v.l) .ToList ())
.Notować();
Następnie masz listę list:
|
list  owoce = new List  ();
list  alphabet = new List  ();
for (int i = 0; i  everyOther  (kolekcja IEnumerable )
{
using (var e = collection.GetEnumerator ()) {
while (e.MoveNext ()) {
rentowność zwrotu e.Current;
e.MoveNext (); // pomiń jeden
}
}
}
Możesz użyć System.Linq.Skip, aby pominąć pierwszy element.
string [] words = "jabłko X banan Y Kiwi z" .Split ();
var owoce = everyOther (słowa);
var alphabets = everyOther (words.Skip (1));
Po prostu użyj ich jako nowej kolekcji lub wywołaj na nich .ToArray () lub .ToList ():
foreach (string f w owocach)
Console.WriteLine (f);
string [] anArray = owoce.ToArray (); // używając System.Linq
Teraz masz to, czego potrzebujesz.
Iteratory to metody, które dają zwrot, zobacz Iteratory (Przewodnik programowania w języku C #). To bardzo mocna cecha języka. Możesz:
pomiń elementy
udekoruj elementy
zmiana kolejności
łączenie sekwencji (zobacz System.Linq.Concat)
...
|
Oto działający kod, miejmy nadzieję, że okaże się pomocny:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
przestrzeń nazw ReadFile
{
Program zajęć
{
static void ReadFile (string filePath, List  custumerNames, List  phoneNumbers)
{
string line = string.Empty;
var fileStream = nowy StreamReader (filePath);
bool isPhoneNumber = true;
while ((line = fileStream.ReadLine ())! = null)
{
if (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (linia));
isPhoneNumber = false;
}
jeszcze
{
custumerNames.Add (linia);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
static void Main (string [] args)
{
Console.WriteLine ("Rozpoczęto odczytywanie pliku ...");
List  custumersNamesList = new List  ();
List  custumersPhonesNumbers = new List  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Zakładając, że obie listy mają taką samą długość.
for (int i = 0; i